package com.ybkj.o2o.sales.manager;


import com.ybkj.o2o.sales.common.ActivityVo;
import com.ybkj.o2o.sales.common.DataGrid;
import com.ybkj.o2o.sales.entity.Activity;
import com.ybkj.o2o.sales.entity.ActivityRecord;

import java.util.List;
/**
 * @author Shine.
 * 
 */
public interface ActivityManager {

  /**
   * 创建活动.
   * @param activity 活动内容
   * @return Activity
   */
  public Activity insert(Activity activity);

  /**
   * 修改活动内容.
   * @param activity 修改内容
   */
  public void update(Activity activity);

  /**
   * 查询单个活动.
   * @param id 活动id
   * @param appKey 系统key
   * @return Activity
   */
  public Activity findOne(Long id, String appKey);

  /**
   * 根据活动事件查询有效活动.
   * @param activityEvent 活动事件
   * @param appKey 系统key
   * @return List
   */
  public List<Activity> listValidByEvent(String activityEvent, String appKey);

  List<Activity> activityList(String activityEvent, Long[] linesId, String appKey);

  /**
   * 查询活动信息.
   * @param companyId 公司id
   * @param activityEvent 活动事件
   * @param page 页数
   * @param size 每页数量
   * @param appKey 系统key 系统key
   * @return DataGrid
   */
  public DataGrid<Activity> queryActivities(Long companyId, String activityEvent,
      String activityType, Integer page, Integer size, String appKey);

  /**
   * 查询所有活动.
   * 
   * @param companyId 公司id
   * @param page 页数
   * @param size 每页数量
   * @param appKey 系统key
   * @return DataGrid
   */
  public DataGrid<Activity> activityAll(Long companyId, Integer page, Integer size, String appKey);

  /**
   * 开始活动.
   * 
   * @param activityId 活动id
   * @param passengerId 用户id
   * @param enterpriseId 企业用户id
   * @param appKey 系统key
   * @return ActivityRecord
   */
  public ActivityRecord startActivity(Long activityId, Long passengerId, Long enterpriseId,
      String appKey);

  /**
   * 开始活动V4.
   * 
   * @param activityId 活动id
   * @param passengerId 用户id
   * @param enterpriseId 企业用户id
   * @param appKey 系统key
   * @return ActivityVo
   */
  public ActivityVo startActivityV4(Long activityId, Long passengerId, Long enterpriseId, String appKey);

  /**
   * 停止活动.
   * 
   * @param activityId 活动id
   * @param appKey 系统key
   */
  public void stopActivity(Long activityId, String appKey);

  /**
   * 删除活动.
   * 
   * @param activityId 活动id
   * @param appKey 系统key
   */
  public void deleteActivity(Long activityId, String appKey);

  /**
   * 查询首单免费活动.
   * 
   * @param companyId 公司id
   * @param appKey 系统key
   * @return List
   */
  public List<Activity> findOneFreeActivity(Long companyId, String appKey);



}
